package com.kuyun.base.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.kuyun.base.base.Page;
import com.kuyun.base.mapper.BasePrivilegeMapper;
import com.kuyun.base.model.BasePrivilege;
import com.kuyun.base.model.ZtreeBean;
import com.kuyun.base.service.BasePrivilegeService;

/**
 * 权限操作服务的接口实现类
 * 
 * @author 唐靖
 *
 * @date 2016年6月18日下午4:35:11
 *
 */
@Service("basePrivilegeService")
public class BasePrivilegeServiceImpl implements BasePrivilegeService {

	/**
	 * 权限操作的mapper对象
	 */
	@Resource
	private BasePrivilegeMapper basePrivilegeMapper;

	/**
	 * 获取平台权限树列表
	 * 
	 * @author 唐靖
	 *
	 * @date 2016年6月18日下午8:22:18
	 *
	 * @return
	 * @throws Exception
	 */
	public List<ZtreeBean> getPrivilegeTree() throws Exception {
		List<ZtreeBean> privileges = basePrivilegeMapper.getPrivilegeTree();
		return privileges;
	}

	/**
	 * 添加权限
	 * 
	 * @author 唐靖
	 *
	 * @date 2016年6月19日下午1:47:42
	 *
	 * @param basePrivilege
	 */
	public void createPrivilege(BasePrivilege basePrivilege) {
		basePrivilegeMapper.createPrivilege(basePrivilege);

	}

	/**
	 * 根据ID查找对应的权限对象
	 * 
	 * @author 唐靖
	 *
	 * @date 2016年6月24日下午11:05:01
	 *
	 * @param parentId
	 * @return
	 */
	public BasePrivilege findSimplePrivilegeById(String parentId) {

		return basePrivilegeMapper.findSimplePrivilegeById(parentId);
	}

	/**
	 * 验证权限名称是否可以重复
	 * 
	 * @author 唐靖
	 *
	 * @date 2016年6月25日下午6:44:45
	 *
	 * @param name
	 * @param object
	 * @return
	 */
	public boolean checkName(BasePrivilege base) {
		int count = basePrivilegeMapper.checkName(base);
		if (count == 0) {
			return true;
		}
		return false;
	}

	/**
	 * 编码检查
	 * 
	 * @author 唐靖
	 *
	 * @date 2016年6月25日下午7:12:41
	 *
	 * @param base
	 * @return
	 * @throws Exception
	 */
	public boolean checkCode(BasePrivilege base) throws Exception {
		int count = basePrivilegeMapper.checkCode(base);
		if (count == 0) {
			return true;
		}
		return false;
	}

	/**
	 * 更新权限
	 * 
	 * @author 唐靖
	 *
	 * @date 2016年6月25日下午8:58:34
	 *
	 * @param basePrivilege
	 */
	public void updatePrivilege(BasePrivilege basePrivilege) {
		if ("root".equals(basePrivilege.getBaseParivilegeParentId())) {
			basePrivilege.setBaseParivilegeParentId(null);
		}
		basePrivilegeMapper.updatePrivilege(basePrivilege);

	}

	/**
	 * 获取所有的菜单权限列表
	 * 
	 * @author 唐靖
	 *
	 * @date 2016年6月25日下午9:33:27
	 *
	 * @return
	 */
	public List<BasePrivilegeService> loadAllMenuPri() {

		return basePrivilegeMapper.loadAllMenuPri();
	}

	public Page<BasePrivilege> findPrivilegeByParentId(String parentId, Page<BasePrivilege> page) {
		Map<String, Object> par = new HashMap<String, Object>();
		par.put("parentId", parentId + "");
		int count = basePrivilegeMapper.findPrivilegeCountByParentId(par);
		page.setTotal(count);
		if (count == 0) {
			return page;
		}
		par.put("start", (page.getPageNumber() - 1) * page.getPageSize());
		par.put("pageSize", page.getPageSize());
		page.setRows(basePrivilegeMapper.findPrivilegeByParentId(par));
		return page;
	}

}
